home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / c / vbccm68k.lha / vbcc / doc / vbcc.doc < prev    next >
Text File  |  1999-03-07  |  26KB  |  660 lines

  1. vbcc - C compiler (c) in 1995-99 by Volker Barthelmann
  2. vbpp - C preprocessor (c) in 1995-96 by Thorsten Schaaps
  3.  
  4.  
  5. INTRODUCTION
  6.  
  7.     vbcc is a free portable and retargetable ANSI C compiler.
  8.     It is split into a target-independant and a target-dependant part, and
  9.     supports emulating datatypes of the target machine on any other machine
  10.     so that it is possible to e.g. make a crosscompiler for a 64bit machine
  11.     on a 32bit machine.
  12.  
  13.     The target-independant part generates a form of intermediate code
  14.     (quads) which has to be dealt with by the code generator. This
  15.     intermediate code is rather cpu independant (apart from register usage)
  16.     but the target-independant part of vbcc uses informations about the
  17.     target machine while generating this code.
  18.  
  19.     If you are interested in writing a code generator for vbcc, contact
  20.     me (the necessary documents are not written yet).
  21.  
  22.     This document only deals with the target-independant parts of vbcc.
  23.     Be sure to read all the documents for your machine.
  24.  
  25.  
  26. LEGAL
  27.  
  28.     vbcc is (c) in 1995-99 by Volker Barthelmann. The builtin preprocessor
  29.     (consisting of the files preproc.c and vbpp.h) is written and (c) by
  30.     Thorsten Schaaps. All other code is (c) by Volker Barthelmann.
  31.     vbcc may be freely redistributed as long as no modifications are made
  32.     and nothing is charged for it.
  33.     Non-commercial usage of vbcc is allowed without any restrictions.
  34.     Commercial usage needs my written consent.
  35.  
  36.     Sending me money, gifts, postcards etc. would be very nice and may
  37.     encourage further development of vbcc, but is not legally or morally
  38.     necessary to use vbcc.
  39.  
  40.  
  41. INSTALLATION
  42.  
  43.     The installation is system dependant and covered in another manual.
  44.  
  45.  
  46. USAGE
  47.  
  48.     Usually vbcc will be called by a frontend. However, if you call it
  49.     directly it has to be done like this (and most of the options
  50.     should be passed through to vbcc by the frontend):
  51.  
  52.       vbcc [options] file
  53.  
  54.     The following options are supported by the machine independant part
  55.     of vbcc:
  56.  
  57.     -quiet      Do not print the copyright notice.
  58.  
  59.     -ic1        Write the intermediate code before optimizing to file.ic1.
  60.  
  61.     -ic2        Write the intermediate code after optimizing to file.ic2.
  62.  
  63.     -debug=n    Set the debug level to n.
  64.  
  65.     -o=ofile    Write the generated assembler output to <ofile> rather than
  66.                 the default file.
  67.  
  68.     -noasm      Do not generate assembler output (only for testing).
  69.  
  70.     -O=n        Turns optimizing options on/off; every bit set in n turns
  71.                 on an option.
  72.                 (See section on optimizing.)
  73.  
  74.     -maxoptpasses=n
  75.                 Set maximum number of optimizer passes to n.
  76.                 (See section on optimizing.)
  77.  
  78.     -inline-size=n
  79.                 Set the maximum 'size' of functions to be inlined.
  80.                 (See section on optimizing.)
  81.  
  82.     -unroll-size=n
  83.                 Set the maximum 'size' of unrolled loops.
  84.                 (See section on optimizing.)
  85.  
  86.     -fp-associative
  87.                 Floating point operations do not obey the law of
  88.                 associativity, e.g. (a+b)+c==a+(b+c) is not true for all
  89.                 floating point numbers a,b,c. Therefore certain optimizations
  90.                 depending on this property cannot be performed on floating
  91.                 point numbers.
  92.                 With this option you can tell vbcc to treat floating point
  93.                 operations as associative and perform those optimizations
  94.                 even if that may change the results in some cases (not
  95.                 ANSI conforming).
  96.  
  97.     -no-alias-opt
  98.                 If the optimizer is turned on, vbcc has to make assumptions
  99.                 on aliasing (i.e. which pointer can point to which
  100.                 objects at a given time). If this option is specified,
  101.                 vbcc will make worst-case assumptions and some
  102.                 non-conforming programs could be made to work that way.
  103.  
  104.     -no-multiple-ccs
  105.                 If the code generator supports multiple condition code
  106.                 registers, vbcc will try to use them when optimizing.
  107.                 This flag prevents vbcc from using them.
  108.  
  109.     -iso
  110.     -ansi       Switch to ANSI/ISO mode.
  111.                 In ANSI mode warning 209 will be printed by default.
  112.                 '__reg' and inline-assembly-functions are not recognized.
  113.                 Also assignments between pointers to <type> and pointers
  114.                 to unsigned <type> will cause warnings.
  115.  
  116.     -maxerrors=n
  117.                 Abort the compilation after n errors; do not stop if n==0.
  118.  
  119.     -dontwarn=n
  120.                 Suppress warning number n; suppress all warnings if n<0.
  121.                 (See the section on errors/warnings.)
  122.  
  123.     -warn=n
  124.                 Turn on warning number n; turn on all warnings if n<0.
  125.                 (See the section on errors/warnings.)
  126.  
  127.     -strip-path
  128.                 Strip the path of filenames in error messages.
  129.                 Error messages may look more convenient to some people that
  130.                 way, but using this together with message browsers or
  131.                 similar programs could cause trouble.
  132.  
  133.     -nested-comments
  134.                 Allow nested comments (not ANSI conforming).
  135.                 Has no effect if the builtin preprocessor is disabled.
  136.  
  137.     -cpp-comments
  138.                 Allow C++ style comments (not ANSI conforming).
  139.                 Has no effect if the builtin preprocessor is disabled.
  140.  
  141.     -macro-redefinition
  142.                 Allow redefinition of macros (not ANSI conforming).
  143.                 Has no effect if the builtin preprocessor is disabled.
  144.  
  145.     -no-trigraphs
  146.                 Prevents expansion of trigraphs (not ANSI conforming).
  147.                 Has no effect if the builtin preprocessor is disabled.
  148.  
  149.     -no-preprocessor
  150.                 Do not invoke the builtin preprocessor vbpp.
  151.  
  152.     -E          Only preprocess the file and write the preprocessed
  153.                 source to <file>.i.
  154.  
  155.     -dontkeep-initialized-data
  156.                 By default vbcc keeps all data of initializations in memory
  157.                 during the whole compilation (it can sometimes make use
  158.                 of this when optimizing). This can take some amount of
  159.                 memory, though. If this option is specified, vbcc does not
  160.                 keep this data in memory and uses less memory.
  161.                 This has not yet been tested very well.
  162.  
  163.  
  164.     The assembler output will be saved to file.asm (if file already contained
  165.     a suffix, this will first be removed; same applies to .ic1/.ic2)
  166.  
  167.  
  168. SOME INTERNALS
  169.  
  170.     I try to make vbcc as ANSI compliant as possible, so I am only mentioning
  171.     some things I consider interesting.
  172.  
  173.  
  174. ERRORS/WARNINGS
  175.  
  176.     vbcc knows the following kinds of messages:
  177.  
  178.     fatal errors        Something is badly wrong and further compilation is
  179.                         impossible or pointless. vbcc will abort.
  180.                         E.g. no source file or really corrupt source.
  181.  
  182.     errors              There was an error and vbcc cannot generate useful
  183.                         code. Compilation continues, but no code will be
  184.                         generated.
  185.                         E.g. unknown identifiers.
  186.  
  187.     warnings (1)        Warnings with ANSI-violations. The program is not
  188.                         ANSI-conforming, but vbcc will generate code that
  189.                         could be what you want (or not).
  190.                         E.g. missing semicolon.
  191.  
  192.     warnings (2)        The code has no ANSI-violations, but contains some
  193.                         strange things you should perhaps look at.
  194.                         E.g. unused variables.
  195.  
  196.     Errors or the first kind of warnings are always displayed and cannot
  197.     be suppressed.
  198.  
  199.     Only some warnings of the second kind are turned on by default.
  200.     Many of them are very useful for some but annoying to others, and
  201.     their usability may depend on programming style. As I do not want
  202.     to force anyone to a certain style, I recommend everyone to find
  203.     their own preferences.
  204.  
  205.     A good way to do this is starting with all warnings turned on by
  206.     -warn=-1. So you will see all possi